Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

2021-Survey-A Comprehensive Survey on Transfer Learning (Part1) Instance Weighting Strategy

https://ieeexplore.ieee.org/document/9134370

長いので分割することに。

この記事はIntroduction, Related Work, Overview, Data Based ApproachのInstance Weighting Strategy。

Introduction

ある分野の知見をほかの分野に転用することが転移学習のやりたいこと。例えば、将棋からチェス、バイオリンからピアノなどである。

だが、なんでも転移すればいいというものではない。スペイン語からフランス語へは、知っているが故に間違えることがあり、Trasnfer LearningではNegative Transferという。

Transfer Learningは2つに分けられる。

  • Homogeneous これは同じ特徴空間の上での転移学習を行う。同じ特徴空間の上なので、Domainの違いはp(x,y)p(x,y)が違うことだけ。
  • Heterogeneous 違う特徴空間の上での転移学習を行う。違う特徴空間の上なので、まさに知識を転移するということになる。

Related Works

比較的に近い各分野について、転移学習との違いを説明する。

Semi-supervised Learning

LabeledとUnlabeled両方で学習を行うが、同じDomainから選んでいることに注意。とはいえ、多くの技法(クラスター仮説など)を借りてくることもできる。

Multi-view Learning

複数の視点から学習する=複数の特徴でそれぞれ学習するというもの。部分空間学習、マルチカーネル学習、co-trainingなどがある。

Multi-task Learning

複数のタスクの中で共同する知識があるだろうということで、それらを共有しつつ同時に学習を進めていく。📄Arrow icon of a page link2020-NIPS-Gradient Surgery for Multi-Task Learning こことかがいい例。

違いとしては、どちらも知識の転移をやりたく、それを実現するためにパラメタの共有、特徴量変換などの手法を共有することがある。しかし、

  • 同時に学習しながら情報を共有し合うMulti-task Learning
  • すでに学習が済んだか、知識を持っている状態で新たに別のタスクを学習するTransfer Learningという構図。

Overview

Domainの定義

Domainとは、特徴空間XXと、そのうえのサンプルの周辺分布p(x)p(\mathbf{x})によって構成される。

D={X,p(x)}D = \{ X, p(\mathbf{x}) \}

Taskの定義

Taskとは、ラベル空間YYと、識別器ffについて以下のように構成される。

T={Y,f}T = \{ Y, f \}

Transfer Learningの定義

以下の図が一番わかりやすい。

Image in a image block

ソースドメインという学習するデータの存在するのは、mSm_S個のDomainから構成されると考える。つまり、{(DSi,TSi)i[1,mS]}\{ (D_{S_i}, T_{S_i}) | i \in [1, m_S] \}このように複数のソースドメインから学習データが集められる。

次に、ターゲットドメインという予測したいデータが存在するDomainは同様に、mTm_T個のドメインで構成される。つまり、{(DTi,TTi)i[1,mT]}\{ (D_{T_i}, T_{T_i}) | i \in [1, m_T] \}である。

転移学習の目標は、fTii[1,mT]f_{T_i} | i \in [1, m_T]をうまく、ソースドメインから学習をすることである。

mS=1m_S=1ならば、Single Source Transfer Learningであり、そうでないならMulti Sourceになる。mTm_Tについては特に名称はないが、もちろん多いほど難しい問題になる。

一番簡単なのは、mS=mT=1m_S=m_T=1である。

Domain Adaptationとは、1つか複数のソースドメインから知識を転移させて、ターゲットドメインのタスクの性能を向上させるプロセスである。つまり、Domain Adaptationを通して、Transfer Learningは実現される

Transfer Learningのカテゴリ分け

大きく分けると以下の3つに分けられる。

  • Transductive Transfer Learning ラベルの情報がソースドメインだけから得ている。
  • Inductive Transfer Learning ラベルの情報がソース、ターゲットドメイン両方から得られる。
  • Unsupervised Transfer Learning ラベルの情報がいずれも得られない場合。

Homogeneousかどうかだと、以下のように分けられる。以下のものがHomogeneous

XS=XT,YS=YTX_S = X_T, Y_S = Y_T

これ以外のもの、たとえばXSXTX_S \neq X_TYSXTY_S \neq X_TはHeterogeneousとなる。

先行研究では、また具体的な手法についてのカテゴリ分けを提唱している。

  • Instance Based 各サンプルについての重みづけを変更する系の手法。
  • Feature Based もともとの特徴から新たな特徴を表現を作り出す。
    • Asymmetric Feature Based ソースドメインの特徴をターゲットドメインの特徴に合致させるようにする。
    • Symmetric Feature Based 新しい特徴空間を定義して、ソースドメイン、ターゲットドメイン両方の特徴をそこに合致させるようにする。
  • Parameter Based モデルのパラメタをそのまま使うか、何かしらの変換を施す。
  • Relational Based ソースドメインで存在するオブジェクト間の関係やパターンをターゲットドメインに適用する。
    • 例えば、グラフの隣接の状況に基づくノードの関係を新しいグラフに転送するとか。

この論文では、Transfer Learningを

  • Data Based Instance Based, Feature BasedのTransfer Learningを含む。
  • Model Based 上記のParameter Basedである。

Relational Basedはこの論文ではあまり紹介しない。

Data Based Interpretation

Instance Based, Feature Basedについての手法紹介。

Image in a image block

Instance Weighting Strategy

密度比推定

ソースドメインにおいて大量のラベルつきサンプルと、少数のラベルがないターゲットドメインのサンプルがあるとする。以下のように、周辺分布だけが違うCovariance Shiftを考える。

pS(x)pT(x),pS(yx)=pT(yx)p_S(\mathbf{x}) \neq p_T (\mathbf{x}), p_S(y|\mathbf{x}) = p_T(y|\mathbf{x})

これを解決する一番簡単なアプローチは、以下のように密度比を推定して、変換すればいい。

Image in a image block

これについて、経験的に説くと以下のような形になる。Ω(f)\Omega(f)は正則化項。

minf1nSi=1nSβiL(f(xiS),yiS)+Ω(f),βipT(xi)pS(xi)\min_f \frac{1}{n_S} \sum_{i=1}^{n_S} \beta_i L(f(\mathbf{x}_i^S), y_i^S) + \Omega(f), \beta_i \approx \frac{p_T(\mathbf{x}_i)}{p_S(\mathbf{x}_i)}
Kernel Mean Matching

同じく密度比推定でβipT(xi)/pS(xi)\beta_i \approx p_T(\mathbf{x}_i) / p_S(\mathbf{x}_i)を推定するのだが、再生核ヒルベルト空間のうえにソース、ターゲット両方のドメインのデータをすべて写像したうえで、ソースとターゲット両方の分布の中心をできるだけ合致させるようにしている

具体的には以下の最適化問題を解く。つまりβi\beta_iの平均は1に近くなるようにする。δ\deltaは小さい値。

Image in a image block

ただこれは中心だけ合わせているので、分布の回転や向きなどは考えていない。他にも、不均衡なサンプルに弱く外れ値にも弱いという欠点がある。

この合わせ方は、Maximum Mean Discrepancy(MMD)を最小化しているといえ、これの実現方法の1つにKernel Mean Matchingがある感じ?

KL Importance Estimation Procedure (KLIEP)

杉山先生のやつ。論文はこちらhttps://www.ism.ac.jp/editsec/aism/pdf/060_4_0699.pdf

ターゲットドメインのPPに対して、QQを合わせていく。この時、KLダイバージェンスを最小化させるのが目標である。ここで、密度比はw^(x)\hat{w}(\mathbf{x})であり、うまく推定していきたい(提案されていたのはSVMだった)

DKL(PQ)=ipte(x)logpte(x)w^(x)ptr(x)=ipte(x)logpte(x)ptr(x)ipte(x)logw^(x)D_{KL}(P||Q)= \sum_i p_{te}(\mathbf{x}) \log \frac{p_{te}(\mathbf{x})}{\hat{w}(\mathbf{x}) p_{tr}(\mathbf{x})} \\ = \sum_i p_{te}(\mathbf{x}) \log \frac{p_{te}(\mathbf{x})}{p_{tr}(\mathbf{x})} - \sum_i p_{te}(\mathbf{x}) \log \hat{w}(\mathbf{x})

実質後者だけ最適化すればよく、これについて経験的に解く。ただし、重みについては先行研究と同じように、制約を設けている。

1nTinTw^(xi)=1\frac{1}{n_T}\sum_i ^{n_T} \hat{w}(\mathbf{x}_i) = 1
2段階のWeighting

2-Stage Weighting Framework for Multi-Source Domain Adaptation(2SW-MDA)

論文はこちら: https://papers.nips.cc/paper_files/paper/2011/hash/d709f38ef758b5066ef31b18039b8ce5-Abstract.html

合計NN個のSource Domainがあり、それぞれから知識を転用してTarget Domainに持っていきたい。Target DomainはUnlabeledであり、つまりTransductive Learningである。

2段階のWeightingをする。

  1. 各ソースドメインから、ターゲットドメインへ、変換する密度比をKMMなどで計算する。
  2. 各ドメインの推定した密度比が得られたので、これをまず使って学習をすることで、Source Domainsis_iについて、識別器fsif^{s_i}が得られる。ターゲットデータの分布p(yx)p(y|\mathbf{x})を各ドメインごと得られる。
  3. 平滑性の仮定に基づいて、各Domainの間の予測した分布は合致させたい。これをもとに、もう1つDomainsis_iに対しての重みβsi\beta_{s_i}を考える。
    1. β=(β1,,βS)\boldsymbol{\beta} = (\beta_1, \cdots, \beta_S)だとして、ターゲットのサンプルiiについて、各fsif^{s_i}による予測の分布はHiSH_i^Sとする。このとき、以下の二次最小化問題を解く。
Image in a image block

WijW_{ij}はサンプルiijjの間の類似度を表す行列で、これは点の距離とかでどうやらガウシアンカーネルで求めているらしい。

similarity(xi,xj)=exp(xixj22σ2)\mathrm{similarity}(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\frac{|| \mathbf{x}_i - \mathbf{x}_j || ^2}{2 \sigma^2})
具体的にステップ2でどのように平滑性仮定を使うのか。

一例としてターゲットドメイン間の類似度を計算する。一例としてガウシアンカーネルで求めめる。

similarity(xi,xj)=exp(xixj22σ2)\mathrm{similarity}(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\frac{|| \mathbf{x}_i - \mathbf{x}_j || ^2}{2 \sigma^2})

次に、ターゲットドメインのサンプルをノードとして、similarityを重みとしたグラフを定義し、

  • AAが類似度行列で、
  • DDは対角成分に各ノードがつながる辺の重みの総和

だとするとグラフラプラシアンはL=DAL=D-Aとなる。グラフラプラシアンについてはこのQiitaを参照。

ターゲットの重みを乗じた各ドメインのKL(DsiDT){KL}(D_{s_i}|| D_T)の計算をするが、最後に正則化項としてこの平滑性を意味するλΩ(f)\lambda \Omega(f)を加えることになる。

minw1,i=1nSwiKL(DSiDT)+λΩ(f)Ω(f)=i,jsimilarity(xi,xj)(f(xi)f(xj))\min_{w_1, \cdots} \sum_{i=1}^{n_S} w_i KL(D_{S_i} || D_T) + \lambda \Omega(f) \\ \Omega(f) = \sum_{i,j} \mathrm{similarity}(\mathbf{x}_i, \mathbf{x}_j) (f(\mathbf{x}_i) - f(\mathbf{x}_j))

正則化項ではターゲットドメインについての計算であり、ffの訓練自体はステップ1で得た密度比によって各ソースドメインに所属するデータをターゲットドメインに変換して、訓練している

TrAdaBoost

論文: https://dl.acm.org/doi/10.1145/1273496.1273521

AdaBoostでは毎イテレーション各サンプルの構成する損失のweightを、誤ったサンプルの重みを大きくするようにすることで効率的に学習できる。具体的には、以下のように重みを更新する。

ここでα(k)\alpha^{(k)}は分類器の重みであり、wi(k)w_i^{(k)}はサンプルの重みである。l(k)l^{(k)}はそのバッチでの損失である。各サンプルiiについての重みはwi(k)w_i^{(k)}である。

l(k)=i=1nwi(k)1[h(k)(xi)yi]i=1nwi(k)α(k)=12log(1l(k)l(k))wi(k+1)=wi(k)exp(α(k)1[h(k)(xi)yi])l^{(k)} = \frac{\sum_{i=1}^n w_i^{(k)} \mathbf{1}[h^{(k)}(\mathbf{x}_i) \neq y_i]}{\sum_{i=1}^n w_i^{(k)}} \\ \alpha^{(k)} = \frac{1}{2} \log (\frac{1 - {l}^{(k)}}{l^{(k)}}) \\ w_i^{(k+1)} = w_i^{(k)} \exp(\alpha^{(k)} \mathbf{1}[h^{(k)}(\mathbf{x}_i) \neq y_i])

ここに転移学習要素を入れると、ソースドメインとターゲットドメインの間で同じ基準で重みづけはできない

  1. 毎イテレーションで、ターゲットドメインのラベルについての損失をδ\deltaとする。
  2. δ\deltaに応じて、以下のようにソースドメインとターゲットドメインの重みを更新する。
    1. いずれも一般的なAdaBoostの重み変更ではない。
    2. ソースドメインのデータの重み。サンプルの重みは、exp\expを使わずにサンプルが多いほど基数が高く、イテレーションの総数NNが大きいほど基数が低くなる。基数は1以下なので、指数が大きいほど重みが小さくなる。
      1. 指数部分は予測とラベルの差。ずれているほど指数が拡大される。
    3. ターゲットドメインのデータの重み。正解率が高いほど基数は下がっていく。
    wS,i(k+1)=wS,i(k)(1+2lognS/N)fk(xS,i)yS,iwT,i(k+1)=wT,i(k)(1l(k)l(k))fk(xS,i)yS,iw_{S,i}^{(k+1)} = w_{S,i}^{(k)} (1 + \sqrt{2 \log n^S / N})^{|f_k(\mathbf{x}_{S,i}) - y_{S,i}|} \\ w_{T,i} ^{(k+1)} = w_{T,i} ^{(k)} (\frac{1 - l^{(k)}}{l^{(k)}})^{|f_k(\mathbf{x}_{S,i}) - y_{S,i}|}
TrAdaBoostの拡張

論文: https://ieeexplore.ieee.org/abstract/document/5539857/

Multi-Source TrAdaBoost

複数のソースドメインがあるという問題設定。

  1. 弱学習器の集合をそれぞれ、i,DSi,DT\forall i, D_{S_i}, D_Tの間で、TrAdaBoostで計算した今の重みを使って訓練する。
    1. 今の重みはステップ2で得る。
  2. 各ソースドメインとターゲットドメインの組み合わせで訓練した識別器について、一番ターゲットドメインでの誤分類率が低いものを選び、その分類器で全体のインスタンスの重みを更新する。

つまり、TrAdaBoostを複数のソースドメインで使うとき、重みは

各ソースドメインでの重みの更新は上の式のように自分自身に複数掛け合わせていくというものであるので、各ソースドメイン間で共通するのは、前の識別器fkf_kを使った指数の肩のfk(xS,i)yS,i|f_k(\mathbf{x}_{S,i}) - y_{S,i}|として使うのは、一番ターゲットドメインで誤分類がすくないソースドメイン、ターゲットドメインの組み合わせということ。

Instance Weighting for Domain Adaptation

論文: https://aclanthology.org/P07-1034/

三種類のサンプルのクロスエントロピー損失を最小化することを提案している。

  • Labeled Target Domain こちらは通常の学習と同じようにすればいい。
  • Unlabeled Target Domain こちらは自己教師あり学習を用いて、Pseudo Labelを付与する。
  • Labeled Source Domain KMMなどで密度比βi\beta_iを推定する。そして、もう1つαi=0,1\alpha_i = 0, 1を定め、Domain適用の結果確信度が高いものを上からX割選ぶ。選ぶ、選ばないはαi\alpha_iで表現する。